package com.cy.member;

import java.awt.Point;
import java.util.ArrayList;

import com.cy.controller.MasterController;
import com.cy.member.parent.ChineseChessman;
/**
 * 士
 * @author CY
 */
public class Shi extends ChineseChessman {

	/**
	 * @param who true红色，false黑色
	 */
	public Shi(boolean who) {
		if(who) {//红车
			this.setBackground("image/红士.GIF");
		} else {//黑车
			this.setBackground("image/黑士.gif");
		}
		//生成棋子
		this.generateChessman(who);
	}

	/**
	 * 士的移动策略
	 * 先保证是对角线运动，步长为1。x的坐标为3-5。
	 * 然后士分为上下2中，在分别限制其y坐标
	 */
	@Override
	public boolean move(Point site, ArrayList<Point> points) {
		if(MasterController.gameType) {
			return jingdian(site);
		} else {
			return liuxing(site);
		}
	}

	/**
	 * 经典模式
	 * @param site
	 * @return
	 */
	private boolean jingdian(Point site) {
		//起点坐标
		Point origin = getChessman().getSite();
		//要求对角线线运动，而且步长为1,3<=x<=5
		if((Math.abs(origin.x-site.x) == 1 && Math.abs(origin.y-site.y) == 1) && site.x >= 3 && site.x <= 5){
			if(origin.y > 5) { //下面的士
				if(site.y >= 7 && site.y <= 9) {//可以走
					getChessman().setSite(site);
					return true;
				}
			} else { //上面的士
				if(site.y >= 0 && site.y <= 2) {//可以走
					getChessman().setSite(site);
					return true;
				} 
			}
		}
		return false;
	}
	
	/**
	 * 流行模式
	 * @param site
	 * @return
	 */
	private boolean liuxing(Point site) {
		//起点坐标
		Point origin = getChessman().getSite();
		//要求对角线线运动，而且步长为1
		if(Math.abs(origin.x - site.x) == 1 && Math.abs(origin.y - site.y) == 1) {
			getChessman().setSite(site);
			return true;
		}
		return false;
	}
}
